<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
    <title>Document</title>
</head>
<body>
    
    <script>
        const obj={
            name:"hhb",
            age:20
        }
        const o={}
        //浅拷贝 里面在套个对象就会改变原来的对象
        Object.assign(o,obj);
        console.log(o);
        //浅拷贝 里面在套个对象就会改变原来的对象
        const oo={...obj}
        console.log(oo);

   

        const objs={
            name:"胡歌",
            age:30,
            sex:"男"
        }
        const objp={}
    //  深拷贝，拷贝从来的新对象不会影响原来的对象
    //  深拷贝用到函数递归
    // 如果遇到普通的属性就直接赋值就好，如果遇到对象里面有数组和套对象的就在次递归就好
        function getHg(newobj,getobj){
            for (let k in getobj) {
                if(getobj[k] instanceof Array){
                    newobj[k]=[]
                    getHg(newobj[k],getobj[k])
                }else if(getobj[k] instanceof Object){
                    newobj[k]={}
                    getHg(newobj[k],getobj[k])
                }else{
                       //这一步还是实现浅拷贝
                   newobj[k]=getobj[k]
                }
             
            }
        }
        getHg(objp,objs)

        // 深拷贝2
        
        const objs1={
            name:"胡歌",
            age:30,
            sex:"男"
        }
        // const obja=_.cloneDeep(objs1)
        // console.log(obja);

        // 先转字符串然后在转对象
        console.log(JSON.stringify(objs1));
       const ol=JSON.parse( JSON.stringify(objs1))
       console.log(ol);
    </script>
</body>
</html>